<?php
namespace app\controller;

use app\controller\BaseController;
use app\controller\FormValidator\AdminConnexionFormValidator;
use model\Admin;
use model\Base\AdminQuery;
use Symfony\Component\HttpFoundation\Request;

class AdminController extends BaseController
{
 
    public function indexAction(Request $request)
    {
        $flashBag = $this->getFlashBag();
        
        if(($this->getUser() != null) && ($this->getUser() instanceof Admin))
        {
            return $this->render('admin/index.php', 
                    array());
        }
        else
        {
            $flashBag->add('warning', "Vous devez être connecté pour acceder à cette page !!");
            return $this->redirect($this->generateUrl('admin_connexion',array()));
        }
    }
    
    public function connexionAction(Request $request)
    {
        $session = $this->getSession();
        $flashBag = $this->getFlashBag();
         
        if($this->getUser() == null)
        {
            if($request->isMethod('POST'))
            {
                $form = $request->request->all();
                $validator = new AdminConnexionFormValidator($form);
                $errors = $validator->isValid();
                if(is_bool($errors))
                {
                    $verifAdmin = AdminQuery::create()->findOneByUsername($form['email']);
                    if($verifAdmin)
                    {
                        $passwordbase = $verifAdmin->getPassword();
                        if(sha1($form['password']) == $passwordbase)
                        {
                            $session->set('user',$verifAdmin);

                            $flashBag->add('success', 'Vous êtes connecté avec succès');

                            return $this->redirect($this->generateUrl('admin_home',array())); // Si il y a des paramêtr
                        }
                        else 
                        {  
                            $flashBag->add('warning', 'Mauvais mot de passe');   
                        }
                     }
                     else
                     {
                         $flashBag->add('warning', "Identifiant incorrect");
                     }
                }
                else
                {
                    $flashBag->add('warning', "Les champs suivant ne sont pas valides ".  implode(', ', $errors));
                }
            }

            return $this->render('admin/connexion.php', 
                    array());

        }
        else
        {
           $flashBag->add('warning', "Vous êtes dèja identifé");
           return $this->redirect($this->generateUrl('admin_home',array()));
        }
    }
    
    public function deconnexionAction(Request $request)
    {
        $session = $this->getSession();
        $flashBag = $this->getFlashBag();
        
        if(($this->getUser() != null) && ($this->getUser() instanceof Admin))
        {
            $session->set("user",null);
        }
        else
        {
            $flashBag->add('warning', "Vous n'êtes pas connecté"); 
        }
        return $this->redirect($this->generateUrl('admin_connexion',array()));
    }
    
    /*public function newAction(Request $request)
    {
        $session = $this->getSession();
        $flashBag = $this->getFlashBag();
         
        if($request->isMethod('POST'))
        {
            $form = $request->request->all();
            $validator = new AdminFormValidator($form);
            $errors = $validator->isValid();
            if(is_bool($errors))
            {
                
                $admin = new Admin();
                $admin->setUsername($form['email']);
                $admin->setNom($form['nom']);
                $admin->setPrenom($form['prenom']);
                $admin->setPassword('12345');
                $admin->setSalt('qdqd11');
                $admin->save();
                
                //$session->set('user',$admin);
                //var_dump($this->getUser()); die('oki 4');
                
                $flashBag->add('success', 'Admin crée avec succès');
                
                return $this->redirect($this->generateUrl('home',array())); // Si il y a des paramêtres dans la route les mettre dans le tableau
                
            }
            else
            {
                $flashBag->add('warning', "Les champs suivant ne sont pas valides ".  implode(', ', $errors));
            }
        }
        
        return $this->render('admin/connexion.php', 
                array());
    }*/
    
    /*public function showAction(Request $request)
    {
        $id = $request->attributes->get('id');
        
        $admin = AdminQuery::create()->findOneById($id);
        
        if(!$admin)
        {
            return new \Exception("l'objet n'existe pas !");
        }
        
        return $this->render('admin/show.php', 
                array('admin' => $admin,
                      'title' => 'Panel Admin'
                ));
    }*/
}